HAL LTDC initialization and configuration functions migration ¶
The goal of this page is to show how to migrate the initialization sequence using STM32CubeMX2:
Open STM32CubeMX2 LTDC configuration panel.
Configure the SW layer HAL.
Configure the LTDC main features.
Configure the LTDC advanced features.
Configure the LTDC layers.
Configure the LTDC GPIO pins.
Configure the NVIC if the application requires the LTDC to be used in IT mode.
Generate the code.
HAL LTDC configuration panel ¶
Create a new project with the STM32CubeMX2, then start the initialization and the main configuration.
HAL LTDC main features configuration ¶
Configure the LTDC main features.
HAL LTDC advanced features configuration ¶
Configure the advanced LTDC features.
HAL LTDC layers configuration ¶
Configure the LTDC layers.
GPIO configuration ¶
Configure GPIO pins.
NVIC configuration ¶
Configure the NVIC in case of an interrupt.
Generated LTDC initialization and de-initialization sequences ¶
The LTDC initialization sequence is generated in the
mx_ltdc_init
function in the
mx_ltdc.c
file under
$YOUR_PROJECT_NAME$/$YOUR_PROJECT_NAME$_SW/generated/STM32Cube_CodeGen.
Related concepts:
Note
In HAL1,
MX_LTDC_Init()
configures the LTDC peripheral and layers, while
HAL_LTDC_MspInit()
handles RCC and GPIO setup.
In HAL2,
mx_ltdc_init()
combines the LTDC peripheral, RCC and GPIO configuration, with layer configuration moved to
mx_ltdc_config_layer().
|
Topic |
HAL1 Code Snippet |
HAL2 Code Snippet |
|---|---|---|
|
Handle declaration |
LTDC_HandleTypeDef hltdc;
|
static hal_ltdc_handle_t hLTDC;
|
|
Initialization and configuration sequence |
static void MX_LTDC_Init(void)
{
LTDC_LayerCfgTypeDef pLayerCfg = {0};
LTDC_LayerCfgTypeDef pLayerCfg1 = {0};
/* LTDC Screen Configuration */
hltdc.Instance = LTDC;
hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
hltdc.Init.HorizontalSync = 0x1;
hltdc.Init.VerticalSync = 0x1;
hltdc.Init.AccumulatedHBP = 0x0000;
hltdc.Init.AccumulatedVBP = 0x0000;
hltdc.Init.AccumulatedActiveW = 0x0000;
hltdc.Init.AccumulatedActiveH = 0x0000;
hltdc.Init.TotalWidth = 0x0000;
hltdc.Init.TotalHeigh = 0x0000;
hltdc.Init.Backcolor.Blue = 0x00;
hltdc.Init.Backcolor.Green = 0x00;
hltdc.Init.Backcolor.Red = 0x00;
if (HAL_LTDC_Init(&hltdc) != HAL_OK)
{
Error_Handler();
}
/* LTDC layer configuration */
pLayerCfg.WindowX0 = 0;
pLayerCfg.WindowX1 = 320;
pLayerCfg.WindowY0 = 0;
pLayerCfg.WindowY1 = 240;
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_L8;
pLayerCfg.Alpha = 255;
pLayerCfg.Alpha0 = 0;
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
pLayerCfg.FBStartAdress = 0; /* The frame buffer address is handled by the user */
pLayerCfg.ImageWidth = 320;
pLayerCfg.ImageHeight = 240;
pLayerCfg.Backcolor.Blue = 0;
pLayerCfg.Backcolor.Green = 0;
pLayerCfg.Backcolor.Red = 0;
if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK)
{
Error_Handler();
}
pLayerCfg1.WindowX0 = 160;
pLayerCfg1.WindowX1 = 480;
pLayerCfg1.WindowY0 = 32;
pLayerCfg1.WindowY1 = 272;
pLayerCfg1.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
pLayerCfg1.Alpha = 255;
pLayerCfg1.Alpha0 = 0;
pLayerCfg1.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
pLayerCfg1.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA;
pLayerCfg1.FBStartAdress = 0; /* The frame buffer address should be managed within the user application code */
pLayerCfg1.ImageWidth = 320;
pLayerCfg1.ImageHeight = 240;
pLayerCfg1.Backcolor.Blue = 0;
pLayerCfg1.Backcolor.Green = 0;
pLayerCfg1.Backcolor.Red = 0;
if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg1, 1) != HAL_OK)
{
Error_Handler();
}
}
void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
if(hltdc->Instance==LTDC)
{
RCC_OscInitTypeDef RCC_OscInitStruct={0};
/** Initializes the peripherals clock */
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
PeriphClkInit.LtdcClockSelection = RCC_LTDCCLKSOURCE_PLL3R;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
/* Peripheral clock enable */
__HAL_RCC_LTDC_CLK_ENABLE();
__HAL_RCC_GPIOG_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/**LTDC GPIO Configuration */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF13_LTDC;
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_12|GPIO_PIN_14
|GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF13_LTDC;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF11_LTDC;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_8|GPIO_PIN_15|GPIO_PIN_0
|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF13_LTDC;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_15|GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF10_LTDC;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF12_LTDC;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* LCD clock configuration */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL1.PLLState = RCC_PLL_NONE;
RCC_OscInitStruct.PLL2.PLLState = RCC_PLL_NONE;
RCC_OscInitStruct.PLL3.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL3.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL3.PLLM = 4;
RCC_OscInitStruct.PLL3.PLLN = 25;
RCC_OscInitStruct.PLL3.PLLP = 2;
RCC_OscInitStruct.PLL3.PLLQ = 20;
RCC_OscInitStruct.PLL3.PLLR = 16;
RCC_OscInitStruct.PLL3.PLLS = 2;
RCC_OscInitStruct.PLL3.PLLT = 2;
RCC_OscInitStruct.PLL3.PLLFractional = 0;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
while(1);
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
PeriphClkInit.LtdcClockSelection = RCC_LTDCCLKSOURCE_PLL3R;
if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
while(1);
}
}
}
|
hal_ltdc_handle_t *mx_ltdc_init(void)
{
hal_ltdc_config_t ltdc_cfg;
if (HAL_LTDC_Init(&hLTDC, HAL_LTDC) != HAL_OK)
{
return NULL;
}
if (HAL_RCC_LTDC_SetKernelClkSource(HAL_RCC_LTDC_CLK_SRC_ICLK8) != HAL_OK)
{
return NULL;
}
HAL_RCC_LTDC_EnableClock();
/* LTDC Screen configuration */
ltdc_cfg.hsync_polarity = HAL_LTDC_HSYNC_POLARITY_LOW;
ltdc_cfg.vsync_polarity = HAL_LTDC_VSYNC_POLARITY_LOW;
ltdc_cfg.data_enable_polarity = HAL_LTDC_DATA_ENABLE_POLARITY_LOW;
ltdc_cfg.pixel_clock_polarity = HAL_LTDC_PIXEL_CLOCK_POLARITY_LOW;
ltdc_cfg.hsync = 0x1;
ltdc_cfg.vsync = 0x1;
ltdc_cfg.h_back_porch = 0x0000;
ltdc_cfg.v_back_porch = 0x0000;
ltdc_cfg.active_width = 0x0000;
ltdc_cfg.active_height = 0x0000;
ltdc_cfg.h_front_porch = 0x0000;
ltdc_cfg.v_front_porch = 0x0000;
if (HAL_LTDC_SetConfig(&hLTDC, <dc_cfg) != HAL_OK)
{
return NULL;
}
/* GPIO Configuration */
HAL_RCC_GPIOD_EnableClock();
HAL_RCC_GPIOE_EnableClock();
HAL_RCC_GPIOB_EnableClock();
HAL_RCC_GPIOC_EnableClock();
hal_gpio_config_t gpio_config;
/** LTDC GPIO Configuration **/
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_14;
HAL_GPIO_Init(HAL_GPIOB, HAL_GPIO_PIN_0 | HAL_GPIO_PIN_10, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_13;
HAL_GPIO_Init(HAL_GPIOG, HAL_GPIO_PIN_0 | HAL_GPIO_PIN_13, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_13;
HAL_GPIO_Init(HAL_GPIOB, HAL_GPIO_PIN_14 | HAL_GPIO_PIN_12 | HAL_GPIO_PIN_11, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_12;
HAL_GPIO_Init(HAL_GPIOC, HAL_GPIO_PIN_12, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_13;
HAL_GPIO_Init(HAL_GPIOA, HAL_GPIO_PIN_7 | HAL_GPIO_PIN_11 | HAL_GPIO_PIN_8 | HAL_GPIO_PIN_0 | HAL_GPIO_PIN_12, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_13;
HAL_GPIO_Init(HAL_GPIOE, HAL_GPIO_PIN_8, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_14;
HAL_GPIO_Init(HAL_GPIOA, HAL_GPIO_PIN_10 | HAL_GPIO_PIN_9, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_12;
HAL_GPIO_Init(HAL_GPIOA, HAL_GPIO_PIN_6 | HAL_GPIO_PIN_4, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_11;
HAL_GPIO_Init(HAL_GPIOB, HAL_GPIO_PIN_9 | HAL_GPIO_PIN_6 | HAL_GPIO_PIN_7 | HAL_GPIO_PIN_8, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_10;
HAL_GPIO_Init(HAL_GPIOB, HAL_GPIO_PIN_1 | HAL_GPIO_PIN_15 | HAL_GPIO_PIN_5, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_10;
HAL_GPIO_Init(HAL_GPIOC, HAL_GPIO_PIN_0, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_13;
HAL_GPIO_Init(HAL_GPIOC, HAL_GPIO_PIN_3, &gpio_config);
gpio_config.mode = HAL_GPIO_MODE_ALTERNATE;
gpio_config.output_type = HAL_GPIO_OUTPUT_PUSHPULL;
gpio_config.pull = HAL_GPIO_PULL_NO;
gpio_config.speed = HAL_GPIO_SPEED_FREQ_LOW;
gpio_config.alternate = HAL_GPIO_AF_14;
HAL_GPIO_Init(HAL_GPIOG, HAL_GPIO_PIN_3, &gpio_config);
return &hLTDC;
}
hal_status_t mx_ltdc_config_layer(hal_ltdc_layer_t layer, void *frame_buffer)
{
hal_ltdc_layer_config_t layer_cfg;
hal_status_t status;
switch (layer)
{
case HAL_LTDC_LAYER_1:
layer_cfg.window_x0 = 0;
layer_cfg.window_x1 = 320;
layer_cfg.window_y0 = 0;
layer_cfg.window_y1 = 240;
layer_cfg.frame_buffer.pixel_format = HAL_LTDC_PIXEL_FORMAT_L8;
layer_cfg.alpha = 255;
layer_cfg.blending_factor1 = HAL_LTDC_BLENDING_FACTOR1_CA;
layer_cfg.blending_factor2 = HAL_LTDC_BLENDING_FACTOR2_1_MINUS_CA;
layer_cfg.frame_buffer.address = (uint32_t)frame_buffer;
layer_cfg.background_color_argb88888 = 0;
layer_cfg.frame_buffer.width = 230;
layer_cfg.frame_buffer.height = 240;
status = HAL_LTDC_SetConfigLayer(&hLTDC, HAL_LTDC_LAYER_1, &layer_cfg);
if (status != HAL_OK)
{
goto end;
}
break;
case HAL_LTDC_LAYER_2:
layer_cfg.window_x0 = 160;
layer_cfg.window_x1 = 480;
layer_cfg.window_y0 = 32;
layer_cfg.window_y1 = 272;
layer_cfg.frame_buffer.pixel_format = HAL_LTDC_PIXEL_FORMAT_RGB565;
layer_cfg.alpha = 255;
layer_cfg.blending_factor1 = HAL_LTDC_BLENDING_FACTOR1_CA;
layer_cfg.blending_factor2 = HAL_LTDC_BLENDING_FACTOR2_1_MINUS_CA;
layer_cfg.frame_buffer.address = (uint32_t)frame_buffer;
layer_cfg.background_color_argb88888 = 0;
layer_cfg.frame_buffer.width = 320;
layer_cfg.frame_buffer.height = 240;
status = HAL_LTDC_SetConfigLayer(&hLTDC, HAL_LTDC_LAYER_2, &layer_cfg);
/* Note: The LTDC frame buffer address and the LTDC start operation should be managed within the user application code */
if (status != HAL_OK)
{
goto end;
}
break;
default:
status = HAL_INVALID_PARAM;
break;
}
end:
return status;
}
|
|
Deinitialization sequence |
void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
{
if(hltdc->Instance==LTDC)
{
__HAL_RCC_LTDC_CLK_DISABLE();
/* De-initialize all GPIO pins associated with LTDC */
HAL_GPIO_DeInit(GPIOG, GPIO_PIN_0|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_13);
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_12|GPIO_PIN_14
|GPIO_PIN_15|GPIO_PIN_11|GPIO_PIN_13);
HAL_GPIO_DeInit(GPIOE, GPIO_PIN_11);
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_11|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_8
|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_6);
}
}
|
void mx_ltdc_deinit(void)
{
(void)HAL_LTDC_DeInit(&hLTDC);
HAL_RCC_LTDC_Reset();
HAL_RCC_LTDC_DisableClock();
/* De-initialize all GPIO pins associated with LTDC */
HAL_GPIO_DeInit(HAL_GPIOB, HAL_GPIO_PIN_0 | HAL_GPIO_PIN_1 | HAL_GPIO_PIN_5 | HAL_GPIO_PIN_6 |
HAL_GPIO_PIN_7 | HAL_GPIO_PIN_8 | HAL_GPIO_PIN_9 | HAL_GPIO_PIN_10 | HAL_GPIO_PIN_11 | HAL_GPIO_PIN_12 |
HAL_GPIO_PIN_14 | HAL_GPIO_PIN_15);
HAL_GPIO_DeInit(HAL_GPIOG, HAL_GPIO_PIN_0 | HAL_GPIO_PIN_3 | HAL_GPIO_PIN_13);
HAL_GPIO_DeInit(HAL_GPIOC, HAL_GPIO_PIN_0 | HAL_GPIO_PIN_3 | HAL_GPIO_PIN_12);
HAL_GPIO_DeInit(HAL_GPIOA, HAL_GPIO_PIN_0 | HAL_GPIO_PIN_4 | HAL_GPIO_PIN_6 | HAL_GPIO_PIN_7 |
HAL_GPIO_PIN_8 | HAL_GPIO_PIN_9 | HAL_GPIO_PIN_10 | HAL_GPIO_PIN_11 | HAL_GPIO_PIN_12);
HAL_GPIO_DeInit(HAL_GPIOE, HAL_GPIO_PIN_8);
}
|
|
IRQ handle function |
void LTDC_ER_IRQHandler(void)
{
HAL_LTDC_IRQHandler(&hltdc);
}
|
void LTDC_ERR_S_IRQHandler(void)
{
HAL_LTDC_ERR_IRQHandler(&hLTDC);
}
|